一方向ハンドシェイクパターン - Noise Protocol Framework (6)
Noiseプロトコルでは、送信者から受信者への一方向のデータストリームをサポートする"一方向"ハンドシェイクがサポートされています。 これらのパターンは、ファイル、データベースレコード、またはその他の非対話型データストリームを暗号化するために使用される可能性があります。
一方向ハンドシェイクの後、送信者はSplit()によって返された最初のCipherStateを使用してそれらを暗号化しながら、トランスポートメッセージのストリームを送信することができます。 Split()の戻り値のうちの2番目のCipherStateは破棄されます - 受信者はそれを使用してメッセージを送信してはいけません。
一方向のパターンは、送信者の静的鍵のステータスを示す文字(1文字)で名前が付けられています。
N = 送信者の静的公開鍵は相手に通知されません。
K = 送信者の静的公開鍵は受信者に事前に知られています。(プレメッセージパターンによって)
X = 送信者の静的公開鍵は受信者に送信されます。(通常のメッセージパターンによって)
以下のようになるはずです。
N:
<- s
...
-> e, es
K:
-> s
<- s
...
-> e, es, ss
X:
<- s
...
-> e, es, s, ss
Nは従来のDH鍵交換のパターンです。Nの場合は受信側は送信者の認証を行いません。
Kは事前に静的公開鍵が知られているケースで、この場合は静的公開鍵が暗号化されて通知されるかどうかはわかりません。
Xの場合は、静的公開鍵は暗号化されて受信者に送信されます。